Java URI Builder
ordilov / 2022. 2. 6
URI Builder
자바에서 URI 클래스는 문자열에서 URI 객체를 생성하거나 URI 구성 별로 가져올 수 있습니다. 하지만 구성 요소들을 조합해서 URI를 만들려고 할 때 직접 문자열들을 합쳐서 만들 수 밖에 없습니다.
URI uri = new URI(host + port + path + query);
query에 여러 값이 들어가거나 하면 만드는게 번잡해집니다. 이런 불편함을 해소하기 위해 URI 빌더 클래스들이 있습니다. 대표적으로 Spring의 UriComponentsBuilder가 있습니다.
UriComponentsBuilder uri = UriComponentsBuilder.fromUri(uri)
.queryParam("name", name)
.queryParam("age", age)
.build();
문자열을 직접 조합할 필요 없이 key value 형식으로 query를 조합할 수 있습니다.
URI query 파싱하기
query의 전체부분을 가져오는 방법은 간단합니다.
uri.getQuery();
다만 이렇게 출력된 결과는 query에 key value를 구분하는 특수문자('=', '&') 이 전부 합쳐져 있습니다.
구분한 값을 받아오려면 getQueryParams()
를 사용하면됩니다.
반환된 결과는 MultiValueMap인데 그 이유는 쿼리에서 하나의 key에 여러 value를 넣을 수 있어서 입니다.
따라서 key 에 따라 반환된 List String value 값들을 사용하면 됩니다.
MultiValueMap<String, String> queryParams = u.getQueryParams();